package action;

import com.opensymphony.xwork2.ActionSupport;
import java.sql.SQLException;
import java.util.List;
import model.Curso;
import model.Disciplina;
import model.Professor;
import model.Turma;

public class TurmaAction extends ActionSupport {

    private String operacao;
    private int codTurma;
    private Turma turma;
    private String nomeDisciplina;
    private int ano;
    private int semestre;
    private int codCurso;
    private List<Turma> turmas;
    private List<Curso> cursos;
    private List<Professor> professores;
    private List<Disciplina> disciplinas;
    private int[] anos = {2014, 2013, 2012, 2011, 2010};
    private int[] semestres = {1, 2};
    private String readOnly;
    private String readOnlyCod;

    public String getReadOnlyCod() {
        return readOnlyCod;
    }

    public void setReadOnlyCod(String readOnlyCod) {
        this.readOnlyCod = readOnlyCod;
    }

    public String getReadOnly() {
        return readOnly;
    }

    public void setReadOnly(String readOnly) {
        this.readOnly = readOnly;
    }

    public String getOperacao() {
        return operacao;
    }

    public void setOperacao(String operacao) {
        this.operacao = operacao;
    }

    public Turma getTurma() {
        return turma;
    }

    public void setTurma(Turma turma) {
        this.turma = turma;
    }

    public List<Turma> getTurmas() {
        return turmas;
    }

    public void setTurmas(List<Turma> turmas) {
        this.turmas = turmas;
    }

    public int getCodTurma() {
        return codTurma;
    }

    public void setCodTurma(int codTurma) {
        this.codTurma = codTurma;
    }

    public String getNomeDisciplina() {
        return nomeDisciplina;
    }

    public void setNomeDisciplina(String nomeDisciplina) {
        this.nomeDisciplina = nomeDisciplina;
    }

    public int getAno() {
        return ano;
    }

    public void setAno(int ano) {
        this.ano = ano;
    }

    public int getSemestre() {
        return semestre;
    }

    public void setSemestre(int semestre) {
        this.semestre = semestre;
    }

    public int getCodCurso() {
        return codCurso;
    }

    public void setCodCurso(int codCurso) {
        this.codCurso = codCurso;
    }

    public List<Curso> getCursos() {
        return cursos;
    }

    public void setCursos(List<Curso> cursos) {
        this.cursos = cursos;
    }

    public List<Professor> getProfessores() {
        return professores;
    }

    public void setProfessores(List<Professor> professores) {
        this.professores = professores;
    }

    public List<Disciplina> getDisciplinas() {
        return disciplinas;
    }

    public void setDisciplinas(List<Disciplina> disciplinas) {
        this.disciplinas = disciplinas;
    }

    public int[] getAnos() {
        return anos;
    }

    public void setAnos(int[] anos) {
        this.anos = anos;
    }

    public int[] getSemestres() {
        return semestres;
    }

    public void setSemestres(int[] semestres) {
        this.semestres = semestres;
    }

    public String pesquisar() throws ClassNotFoundException, SQLException {
        cursos = Curso.obterCursos();
        turmas = Turma.obterTurmas();
        return "pesquisar";
    }

    public String incluir() throws ClassNotFoundException, SQLException {
        operacao = "Incluir";
        readOnly = "";
        readOnlyCod = "";
        disciplinas = Disciplina.obterDisciplinas();
        professores = Professor.obterProfessores();
        return "manter";
    }

    public String editar() throws ClassNotFoundException, SQLException {
        operacao = "Editar";
        readOnly = "";
        readOnlyCod = "true";
        turma = Turma.obterTurma(codTurma);
        disciplinas = Disciplina.obterDisciplinas();
        professores = Professor.obterProfessores();
        return "manter";
    }

    public String excluir() throws ClassNotFoundException, SQLException {
        operacao = "Excluir";
        readOnly = "true";
        readOnlyCod = "true";
        turma = Turma.obterTurma(codTurma);
        disciplinas = Disciplina.obterDisciplinas();
        professores = Professor.obterProfessores();
        return "manter";
    }

    public String confirmar() throws SQLException, ClassNotFoundException {
        boolean erro = false;
        disciplinas = Disciplina.obterDisciplinas();
        professores = Professor.obterProfessores();
        if(turma.getCodTurma() == null || turma.getCodTurma() == 0){
            erro = true;
            addFieldError("turma.codTurma", "Não pode ser NULO");
        }
        
        if(turma.getDisciplina() == null){
            erro = true;
            addFieldError("turma.disciplina.codDisciplina", "Não pode ser NULO");
        }
        
        if(turma.getProfessor() == null){
            erro = true;
            addFieldError("turma.professor.matricula", "Não pode ser NULO");
        }
        
        if(erro){
            return INPUT;
        }

        if (operacao.equals("Incluir")) {
            turma.gravar();
        } else {
            if (operacao.equals("Editar")) {
                turma.alterar();
            } else {
                if (operacao.equals("Excluir")) {
                    turma.excluir();
                }
            }
        }
        return pesquisar();
    }

    public String voltar() {
        return "voltar";
    }

}
